package com.shiyun.disaster_station.section.bean.req;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.shiyun.disaster_station.section.bean.po.SectionPo;
import lombok.Data;

import java.util.Date;

/**
 * 类 描 述: 区间导入对象
 * 作   者: 史 云
 * 版   本: 1.0.0
 * 时   间: 2022年01月11日  10:00:00
 */
@Data
public class SectionImportReq {
    /**
     * 属性描述: 线路
     * 作    者: 史 云
     * 时    间: 2022年07月19日  10:35:05
     */
    String lineName;
    /**
     * 属性描述: 区间
     * 作    者: 史 云
     * 时    间: 2022年07月19日  10:35:16
     */
    String name;
    /**
     * 属性描述: 起始里程
     * 作    者: 史 云
     * 时    间: 2022年07月19日  10:35:29
     */
    String mileageStart;
    /**
     * 属性描述: 终止里程
     * 作    者: 史 云
     * 时    间: 2022年07月19日  10:35:41
     */
    String mileageEnd;
    /**
     * 属性描述: 地形
     * 作    者: 史 云
     * 时    间: 2022年07月19日  10:35:56
     */
    String terrain;

    /**
     * 方法描述: 获取PO类型
     * 作    者: 史 云
     * 时    间: 2022年07月19日  16:09:52
     */
    public SectionPo getSectionPo(String preStationLoc, String nexStationLoc, String lineId,String lineCordWgs84) {
        SectionPo sectionPo = new SectionPo();
        // 设置编号
        String mileage = (mileageStart + StringPool.TILDA + mileageEnd).replace(StringPool.DOT, StringPool.PLUS);
        sectionPo.setCode(mileage);
        // 设置名称
        sectionPo.setName(name);
        // 设置初始里程
        double minMileage = Double.parseDouble(preStationLoc.split(StringPool.UNDERSCORE)[1]);
        double maxMileage = Double.parseDouble(nexStationLoc.split(StringPool.UNDERSCORE)[1]);
        sectionPo.setMileageStart(Math.min(minMileage,maxMileage));
        // 设置终止里程
        sectionPo.setMileageEnd(Math.max(minMileage,maxMileage));
        // 设置线路
        sectionPo.setLineId(Integer.valueOf(lineId));
        // 设置起始站点ID
        sectionPo.setStationStartId(Integer.valueOf(preStationLoc.split(StringPool.UNDERSCORE)[0]));
        // 设置终止站点ID
        sectionPo.setStationEndId(Integer.valueOf(nexStationLoc.split(StringPool.UNDERSCORE)[0]));
        // 设置地形
        sectionPo.setTerrain(computeTerrain(terrain));
        // 设置区间的点标识
        sectionPo.setLineCordWgs84(lineCordWgs84);
        // 设置描述、备注、创建时间、创建人、操作类型、更新时间、更新人、更新操作类型、是否删除、区间类型【1普通】、工务段ID【未知】、铁路局
        sectionPo.setRemark("备注");
        Date nowDate = new Date();
        sectionPo.setOperDate(nowDate);
        sectionPo.setOperId(1);
        sectionPo.setOperType(0);
        sectionPo.setUpdateOperDate(nowDate);
        sectionPo.setUpdateOperId(1);
        sectionPo.setUpdateOperType(0);
        sectionPo.setIsDelete(0);
        sectionPo.setSectionType(1);
        sectionPo.setGdId(1);
        sectionPo.setArea("西安铁路局");
        return sectionPo;
    }

    /**
     * 方法描述: 计算地形
     * 作    者: 史 云
     * 时    间: 2022年07月19日  17:07:43
     */
    private Integer computeTerrain(String terrainName) {
        if (StrUtil.isNotBlank(terrainName) && (terrainName.contains("山区") || terrainName.contains("重丘"))) {
            return 1;
        } else {
            return 2;
        }
    }
}
